Threshold encryption using homomorphic signatures

ABSTRACT

A threshold encryption system comprising a sender device ( 120 ) configured to generate ciphertexts and at least one entity device ( 110 ) configured to perform partial decryption of ciphertexts. The system is based on Cramer-Shoup encryption systems and use linearly homomorphic signatures as publicly verifiable proofs of ciphertext validity.

TECHNICAL FIELD

The present invention relates generally to cryptography and in particular to threshold cryptosystems.

BACKGROUND

This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.

In threshold cryptosystems, private keys are shared among n entities (also called “servers”) so as to avoid single points of failure. As a result, at least t≦n entities must contribute to the decryption process. When modeling the security, one distinguishes static adversaries, who have to decide which entities they want to corrupt before seeing the public key, from strictly stronger adaptive adversaries, who can decide whom to corrupt depending on the previously collected information.

More formally, a non-interactive (t,n)-threshold cryptosystem is a set of algorithms with these specifications.

Setup (λ, t, n): given a security parameter λ and integers t, n ∈ poly(λ) (with 1≦t≦n) denoting the number of decryption entities n and the decryption threshold t, this algorithm outputs (PK, VK, SK), where PK is the public key, SK=(SK₁, . . . , SK_(n)) is a vector of private-key shares and VK=(VK₁, . . . , VK_(n)) is a vector of verification keys. Decryption entity i is given the private key share (i, SK_(i)). For each i ∈{1, . . . , n}, the verification key VK_(i) will be used to check the validity of decryption shares generated using SK_(i). Encrypt (PK,M): is a randomized algorithm that, given a public key PK and a plaintext M, outputs a ciphertext C. Ciphertext-Verify (PK,C): takes as input a public key PK and a ciphertext C. It outputs 1 if the ciphertext C is deemed valid with regard to the public key PK, and 0 otherwise. Share-Decrypt (PK, i, SK_(i), C): on input of a public key PK, a ciphertext C and a private-key share (i, SK_(i)), this (possibly randomized) algorithm outputs a special symbol (i,⊥) if Ciphertext-Verify (PK, C)=0. Otherwise, it outputs a decryption share μ_(i)=(i, {circumflex over (μ)}_(i)). Share-Verify (PK, VK_(i), C, μ_(i)): takes in a public key PK, the verification key VK_(i), a ciphertext C and a purported decryption share μ_(i)=(i, {circumflex over (μ)}_(i)). It outputs either 1 or 0. In the former case, μ_(i) is said to be a valid decryption share. In the following, the convention that (i,⊥) is an invalid decryption share is adopted. Combine (PK, VK, C, {μ_(i)}_(i∈s)): given a public key PK, the verification key VK, a ciphertext C and a subset S ⊂{1, . . . , n} of size t=|S| with decryption shares {μ_(i)}_(i∈s), this algorithm outputs either a plaintext M or, if the set contains invalid decryption shares, ⊥.

Further descriptions of threshold cryptosystems may be found in:

-   -   Y. Desmedt. Society and Group Oriented Cryptography: A New         Concept. In Crypto'87, Lecture Notes in Computer Science 293,         pp. 120-127, Springer, 1987.     -   Y. Desmedt, Y. Frankel. Threshold Cryptosystems. In Crypto'89,         Lecture Notes in Computer Science 435, pp. 307-315, Springer,         1989.     -   C. Boyd. Digital Multisignatures. In Cryptography and Coding         (H. J. Beker and F. C. Piper Eds.), Oxford University Press, pp.         241-246, 1989.

As will be described hereinafter, further developments have been made to threshold schemes.

Schemes Resisting Static Corruptions

Chosen-ciphertext security (Indistinguishability under Chosen Ciphertext Attack, IND-CCA) is widely recognized as the standard security notion for public-key encryption. Securely distributing the decryption procedure of CCA-secure public-key schemes has been a challenging task. The difficulty is that decryption entities should return their partial decryption results before knowing whether the incoming ciphertext is valid and, in some cases, partial decryptions of ill-formed ciphertexts may leak useful information to the adversary. For this reason, it is difficult to “thresholdize” the original Cramer-Shoup system [R. Cramer, V. Shoup. A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack. In Crypto'98, Lecture Notes in Computer Science 1462, pp. 13-25, Springer, 1998.] because the validity of ciphertexts cannot be publicly verified.

The first solution to this problem was put forth by Shoup and Gennaro [V. Shoup, R. Gennaro. Securing Threshold Cryptosystems against Chosen Ciphertext Attack. In Journal of Cryptology, 15(2), pp. 75-96, 2002. Earlier version in Eurocrypt'98, Lecture Notes in Computer Science 1403, pp. 1-16, Springer, 1998.]: it requires the random oracle model and assumes static corruptions. In the standard model, Canetti and Goldwasser [R. Canetti, S. Goldwasser. An Efficient Threshold Public Key Cryptosystem Secure Against Adaptive Chosen Ciphertext Attack. In Eurocrypt'99, Lecture Notes in Computer Science 1592, pp. 90-106, 1999.] gave a threshold variant of the Cramer-Shoup encryption scheme. Unfortunately, their scheme requires interaction among decryption entities to obtain robustness (i.e., ensure that no coalition of t-1 malicious decryption entities can prevent uncorrupted servers from successfully decrypting) as well as to render invalid ciphertexts harmless. Cramer, Damg{dot over (a)}rd and Ishai suggested [R. Cramer, I. Damg{dot over (a)}rd, Y. Ishai. Share Conversion, Pseudorandom Secret-Sharing and Applications to Secure Computation. In TCC'05, Lecture Notes in Computer Science 3378, pp. 342-362, Springer, 2005.] a method to remove the need for interaction but it is only efficient for a small number of entities.

Other threshold variants of Cramer-Shoup were suggested [M. Abe. Robust Distributed Multiplicaton without Interaction. In Crypto'99, Lecture Notes in Computer Science 1666, pp. 130-147, Springer, 1999. and P. MacKenzie. An Efficient Two-Party Public Key Cryptosystem Secure against Adaptive Chosen Ciphertext Attack. In PKC'03, Lecture Notes in Computer Science 2567, pp. 47-61, Springer, 2003.] and Abe notably showed how to achieve optimal resilience (namely, guarantee robustness as long as the adversary corrupts a minority of t<n/2 entities) in the Canetti-Goldwasser system mentioned hereinbefore. In the last decade, generic constructions of CCA-secure threshold cryptosystems with static security were put forth [see Y. Dodis, J. Katz. Chosen-Ciphertext Security of Multiple Encryption. In TCC'05, Lecture Notes in Computer Science 3378, pp. 188-209, Springer, 2005.]

Using the techniques of Canetti-Halevi-Katz [see and R. Canetti, S. Halevi, J. Katz. Chosen-Ciphertext Security from Identity-Based Encryption. In Eurocrypt'04, Lecture Notes in Computer Science 3027, pp. 207-222, Springer, 2004.], Boneh, Boyen and Halevi [D. Boneh, X. Boyen, S. Halevi. Chosen Ciphertext Secure Public Key Threshold Encryption Without Random Oracles. In CT-RSA'06, Lecture Notes in Computer Science 3860, pp. 226-243, Springer, 2006.] gave a fully non-interactive robust CCA-secure threshold cryptosystem with a security proof in the standard model: in their scheme, decryption entities can generate their decryption shares without any communication with other entities. Similar applications of the Canetti-Halevi-Katz methodology to threshold cryptography were also studied [see X. Boyen, Q. Mei, B. Waters. Direct Chosen Ciphertext Security from Identity-Based Techniques. in ACM CCS'05, pp. 320-329, ACM Press, 2005. and E. Kiltz. Chosen-ciphertext security from tag-based encryption. In TCC'06, Lecture Notes in Computer Science 3876, pp. 581-600, Springer, 2006.].

Wee [H. Wee. Threshold and Revocation Cryptosystems via Extractable Hash Proofs. In Eurocrypt'11, Lecture Notes in Computer Science 6632, pp. 589-609, Springer, 2011.] defined a framework allowing to construct non-interactive threshold signatures and (chosen-ciphertext secure) threshold cryptosystems in a static corruption model.

Adaptively Secure Schemes

Most threshold systems (including the ones by Shoup-Gennaro, Canetti-Goldwasser, Dodis-Katz, Boneh-Boyen-Halevi, and [P.-A. Fouque, D. Pointcheval. Threshold Cryptosystems Secure against Chosen-Ciphertext Attacks. In Asiacrypt'01, Lecture Notes in Computer Science 2248, pp. 351-368, Springer, 2001.]) have been analyzed in a static corruption model, where the adversary chooses which entities it wants to corrupt before the scheme is set up. Unfortunately, adaptive adversaries—who can choose whom to corrupt at any time, as a function of their entire view of the protocol execution—are known (see, e.g., R. Cramer, I. Damg{dot over (a)}rd, S. Dziembowski, M. Hirt, T. Rabin. Efficient Multi-Party Computations Secure Against an Adaptive Adversary. In Eurocrypt'99, Lecture Notes in Computer Science 1592, pp. 311-326, Springer, 1999.]) to be strictly stronger.

Assuming reliable erasures, Canetti et al. [R. Canetti, R. Gennaro, S. Jarecki, H. Krawczyk, T. Rabin. Adaptive Security for Threshold Cryptosystems. In Crypto'99, Lecture Notes in Computer Science 1666, pp. 98-115, Springer, 1999.] devised adaptively secure protocols for the distributed generation of discrete-logarithm-based keys and DSA signatures. Their techniques were re-used in threshold RSA signatures [see J. Almansa, I. Damg{dot over (a)}rd, J.-B. Nielsen. Simplified Threshold RSA with Adaptive and Proactive Security. In Eurocrypt'06, Lecture Notes in Computer Science 4004, pp. 593-611, Springer, 2006.]. Frankel,

MacKenzie and Yung independently showed different methods to achieve adaptive security in the erasure-enabled setting [see Y. Frankel, P. MacKenzie, M. Yung. Adaptively-Secure Distributed Public-Key Systems. In ESA'99, Lecture Notes in Computer Science 1643, pp. 4-27, Springer, 1999. and Y. Frankel, P. MacKenzie, M. Yung. Adaptively-Secure Optimal-Resilience Proactive RSA. In Asiacrypt'99, Lecture Notes in Computer Science 1716, pp. 180-194, Springer, 1999.].

Subsequently, Jarecki and Lysyanskaya [S. Jarecki, A. Lysyanskaya. Adaptively Secure Threshold Cryptography: Introducing Concurrency, Removing Erasures. In Eurocrypt'00, Lecture Notes in Computer Science 1807, pp. 221-242, Springer, 2000.] eliminated the need for erasures and gave an adaptively secure variant of the Canetti-Goldwasser threshold cryptosystem which appeals to interactive zero-knowledge proofs but remains secure in concurrent environments. Unfortunately, their scheme requires a fair amount of interaction among decryption entities. Lysyanskaya and Peikert [A. Lysyanskaya, C. Peikert. Adaptive Security in the Threshold Setting: From Cryptosystems to Signature Schemes. In Asiacrypt'01, Lecture Notes in Computer Science 2248, pp. 331-350, Springer, 2001.] also dealt with adaptive adversaries but their schemes are also interactive. Abe and Fehr [M. Abe, S. Fehr. Adaptively Secure Feldman VSS and Applications to Universally-Composable Threshold Cryptography. In Crypto'04, Lecture Notes in Computer Science 3152, pp. 317-334, Springer, 2004.] showed how to dispense with zero-knowledge proofs in the Jarecki-Lysyanskaya construction so as to prove it secure in (a variant of) the universal composability framework but without completely eliminating interaction from the decryption procedure.

In 2010, Qin et al. [B. Qin, Q. Wu, L. Zhang, J. Domingo-Ferrer. Threshold Public-Key Encryption with Adaptive Security and Short Ciphertexts. In ICICS'10, Lecture Notes in Computer Science 6476, pp. 62-76, Springer, 2010.] suggested a non-interactive threshold cryptosystem (more precisely, a threshold broadcast encryption scheme) with adaptive security. Its downside is its lack of scalability since private key shares consist of O(n) elements, where n is the number of entities (while, in prior schemes, the share size only depends on the security parameter). Moreover, the security proof requires the threshold t to be at most polylogarithmic in the security parameter, even if n is polynomial.

In 2011, Libert and Yung showed [B. Libert, M. Yung. Adaptively Secure Non-Interactive Threshold Cryptosystems. In ICALP 2011, Lecture Notes in Computer Science 6756, pp. 588-600, Springer, 2011.] an adaptively secure variant of the Boneh-Boyen-Halevi construction using groups of composite order. Their scheme is based on a very specific use of the Lewko-Waters techniques [A. Lewko, B. Waters. New Techniques for Dual System Encryption and Fully Secure HIBE with Short Ciphertexts. In TCC 2010, Lecture Notes in Computer Science 5978, pp. 455-479, Springer, 2010.], which limits its applicability to composite order groups and makes it computationally expensive (not to mention the difficulty of combining it with existing adaptively secure distributed key generation techniques). In 2012, Libert and Yung [B. Libert, M. Yung. Non-Interactive CCA2-Secure Threshold Cryptosystems with Adaptive Security: New Framework and Constructions. In TCC 2012, Lecture Notes in Computer Science 7194, pp. 75-93, Springer, 2012.] described a framework for constructing more efficient non-interactive adaptively secure CCA-secure threshold cryptosystems. However, their most efficient schemes remain significantly less efficient than the standard Cramer-Shoup cryptosystem—which incurs a ciphertext overhead of about 768 bits on carefully chosen elliptic curves for 128 bits of security—for a given security level. In their most efficient construction, ciphertexts are about 3328 bits longer than plaintexts at the 128-bit security level.

It will thus be appreciated that there is a need for a solution that improves the efficiency of the adaptively secure non-interactive constructions in the latter paper by Libert and Yung from bandwidth and computational points of view, while retaining security proofs in the standard model under hardness assumptions of constant size: namely, the number of input elements should not depend on the number of decryption queries made by the adversary. The present invention provides such a solution.

SUMMARY OF INVENTION

In a first aspect, the invention is directed to a device for encrypting a message using a public key. The device comprises a processor configured to:

obtain encryption exponents; generate a plurality of ciphertext components, wherein a first ciphertext component is generated by multiplying the message with at least one element of the public key to the power of an encryption exponent and a plurality of second ciphertext components, each of the plurality of second ciphertext components being generated by taking at least one further element of the public key to the power of an encryption exponent; generate a linearly homomorphic signature on the plurality of second ciphertext components with respect to a tag obtained from the first ciphertext component and at least part of the plurality of second encryption components; and generate an overall ciphertext comprising the ciphertext components, and the linearly homomorphic signature. The device further comprises an interface configured to output the overall ciphertext.

In a second aspect, the invention is directed to a device for partially decrypting a ciphertext using a partial private key comprising a share of an entire private key, the ciphertext comprising a first ciphertext component, and a plurality of second ciphertext components forming a linearly homomorphic signature. The device comprises a processor configured to: verify that the linearly homomorphic signature is a valid signature for a vector comprising the plurality of second ciphertext components; obtain a partial decryption of the ciphertext using the partial private key; generate commitments to exponents of the partial private key; generate a proof that the commitments satisfy at least one predefined equality showing the correctness of the partial decryption; and generate a result comprising the partial decryption, the commitments and the proof. The device further comprises an interface configured to output the result.

In a third aspect, the invention is directed to a method for encrypting a message using a public key. A processor obtains encryption exponents; generates a plurality of ciphertext components, wherein a first ciphertext component is generated by multiplying the message with at least one element of the public key to the power of an encryption exponent and a plurality of second ciphertext components, each of the plurality of second ciphertext components being generated by taking at least one further element of the public key to the power of an encryption exponent; generates a linearly homomorphic signature on the plurality of second ciphertext components with respect to a tag obtained from the first ciphertext component and at least part of the plurality of second encryption components; generates an overall ciphertext comprising the ciphertext components, and the linearly homomorphic signature; and outputs the overall ciphertext.

In a fourth aspect, the invention is directed to a method for partially decrypting a ciphertext using a partial private key comprising a share of an entire private key, the ciphertext comprising a first ciphertext component, and a plurality of second ciphertext components forming a linearly homomorphic signature. A processor verifies that the linearly homomorphic signature is a valid signature for a vector comprising the plurality of second ciphertext components; obtains a partial decryption of the ciphertext using the partial private key; generates commitments to exponents of the partial private key; generates a proof that the commitments satisfy at least one predefined equality showing the correctness of the partial decryption; generates a result comprising the partial decryption, the commitments and the proof; and outputs the result.

In a fifth aspect, the invention is directed to a non-transitory digital data support that stores instructions that, when executed by a processor, perform the method of the third aspect.

In a sixth aspect, the invention is directed to a non-transitory digital data support that stores instructions that, when executed by a processor, perform the method of the fourth aspect.

BRIEF DESCRIPTION OF DRAWINGS

Preferred features of the present invention will now be described, by way of non-limiting example, with reference to the accompanying drawings, in which FIG. 1 illustrates an exemplary system in which the invention may be implemented.

DESCRIPTION OF EMBODIMENTS

A main idea of the present invention is to use linearly homomorphic signatures as publicly verifiable proofs of ciphertext validity in Cramer-Shoup-type encryption schemes. Such schemes rely on the fact that, for a given public key, a cryptosystem may have exponentially many possible private keys. The key idea is that, in the security proofs of Cramer-Shoup, the adversary does not know which private key the reduction is using. The only way for the adversary to infer information about the reduction's particular private key is to invoke the decryption oracle on invalid ciphertexts (because, on valid ciphertexts, all private keys give the same result).

For example, for a cyclic group

of order p, consider the semantically secure cryptosystem where ciphertexts in

⁴

(C ₁ ,C ₂ ,C ₃ ,C ₀)=(f ^(θis 1) , h ^(θ) ² , g ^(θ) ¹ ^(+θ) ² , M·X ₁ ^(θ) ¹ ·X ₂ ^(θ) ² )

are decrypted as M=C₀·C₁ ^(−x) ¹ C₂ ^(−x) ² C₃ ^(−y), where (X₁, X₂)=(f^(x) ¹ g^(y), h^(x) ² g^(y)) is the public key and (x₁, x₂, y) is the private key. In Libert and Yung [B. Libert, M. Yung. Non-Interactive CCA2-Secure Threshold Cryptosystems with Adaptive Security: New Framework and Constructions. In TCC 2012, Lecture Notes in Computer Science 7194, pp. 75-93, Springer, 2012.] such a system was made chosen-ciphertext secure using a publicly verifiable proof that (C₁, C₂, C₃) is of the form (C₁, C₂, C₃)=(f^(θ) ¹ , h^(θ) ² , g^(θ) ¹ ^(+θ) ² ), for some θ₁, θ₂ ∈

_(p). In the security proof, the reduction is guaranteed not to leak too much information about (x₁, x₂, y) as long as the adversary is unable to generate a fake proof for an invalid triple (C₁, C₂, C₃). Consequently, if the challenge ciphertext is computed by choosing an invalid triple (C₁, C₂, C₃) and computing C₀=M·C₁ ^(x) ¹ ·C₂ ^(x) ² ·C₃ ^(y), the plaintext M is independent of the adversary's view. To make sure the adversary will not obtain the result of a decryption query on an invalid (C₁, C₂, C₃), Libert-Yung includes in each ciphertext a non-interactive Groth-Sahai proof [see J. Groth and A. Sahai. Efficient non-interactive proof systems for bilinear groups. In Eurocrypt'08, Lecture Notes in Computer Science 4965, pages 415-432, Springer, 2008] that (C₁, C₂, C₃) is well-formed in the ciphertext. This technique works well in the threshold setting because Groth-Sahai proofs are publicly verifiable.

In the present invention, efficiency is gained by replacing these Groth-Sahai proofs by linearly homomorphic signatures. The idea is to include in the public key the verification key of a one-time linearly homomorphic structure-preserving signature (SPS) for n=3 as well as signatures on the vectors (f,

,g),(

,h, g) ∈

³. This allows the sender to publicly derive a linearly homomorphic signature (z,r,u) on the vector (C₁, C₂, C₃)=(f^(θ) ¹ , h^(θ) ² , g^(θ) ¹ ^(+θ) ² ). Each cipher text thus consists of (z,r,u, C₀, C₁, C₂, C₃). In the security proof, at each pre-challenge decryption query, the signature (z,r,u) serves as publicly verifiable evidence that (f, h, g, C₁,C₂,C₃) has the right form: in order to generate a proof for a false statement, the adversary has to break the security of the homomorphic signature, by deriving a signature on a vector (C₁, C₂, C₃) outside the span of (f,

,g) and (

,h,g).

While this technique suffices to achieve security against non-adaptive chosen-ciphertext attacks (where the adversary has a decryption oracle only before the challenge phase), it is no longer sufficient if the adversary is allowed to make post-challenge decryption queries: indeed, the scheme remains malleable. To address this problem, the first and second preferred embodiments of the present invention take advantage of the tag in the first signature of the linearly homomorphic signature scheme described in the Annex, while the third preferred embodiment uses the second signature scheme of the Annex.

When encrypting the message, the sender first derives a one-time linearly homomorphic signature on the vector (C₁, C₂, C₃) and then computes a checksum value by hashing (C₀, C_(i), C₂, C₃) and certain linearly homomorphic signature components: the resulting checksum value T is obtained by applying a chameleon hash [see H. Krawczyk, T. Rabin. Chameleon Signatures. In Proceedings of the Network and Distributed System Security Symposium (NDSS 2000), The Internet Society, 2000.] function to (C₀, C₁, C₂, C₃) and (z,r) components of the derived signature. The resulting value then serves as a tag in the linearly homomorphic signature (which the sender can construct from the derived one-time linearly homomorphic signature on (C₁, C₂, C₃)) and helps make sure that post-challenge decryption queries will not help the adversary.

Eventually, the efficiency of Libert-Yung is significantly improved for two reasons: (i) In the ciphertext, Groth-Sahai proofs can be replaced by linearly homomorphic signatures, which are more compact; (ii) The structure of the ciphertexts of the present invention makes it possible to use a chameleon hash function instead of a one-time signature (which was not possible in Libert-Yung) to hedge against post-challenge decryption queries: this allows eliminating at least 4 group elements from the ciphertext.

First Preferred Embodiment

The first preferred embodiment relies on the simultaneous eXternal Decision Linear assumption: i.e., it is assumed that XDLIN₁ and XDLIN₂ both hold in asymmetric pairing-friendly groups (

,

,

_(T)); the assumption is described in M. Abe, M. Chase, B. David, M. Kohlweiss, R. Nishimaki, M. Ohkubo. Constant-Size Structure-Preserving Signatures: Generic Constructions and Simple Assumptions. In Asiacrypt'12, Lecture Notes in Computer Science 7658, pp. 4-24, Springer, 2012.

Keygen (λ, t, n):

1. Choose bilinear groups (

,

,

_(T)) of prime order p>2^(λ), generators

$g,f,{h\overset{R}{}},{\hat{g}\overset{R}{}\hat{}},x_{1},x_{2},{y\overset{R}{}{\mathbb{Z}}_{p}}$

and set X₁=f^(x) ¹ g⁶ ∈

, X₂=h^(x) ² g^(y) ∈

. Then, define the vectors {right arrow over (f)}=(f,1,g) ∈

³ and {right arrow over (h)}=(1,h,g) ∈

³.

2. Choose

${\hat{f}}_{1},{{\hat{f}}_{2}\overset{R}{}}$

and define vectors

{right arrow over (f)} ₁=({circumflex over (f)} ₁, 1, ĝ), {right arrow over (f)} ₂=(1, {circumflex over (f)} ₂ , ĝ), {right arrow over (f)} ₃ ={right arrow over (f)} ₁ ^(φ) ¹ ·{right arrow over (f)} ₂ ^(φ)·(1, 1, ĝ)

where

$\varphi_{1},{\varphi_{2}\overset{R}{}{\mathbb{Z}}_{p}},$

which is used as a Groth-Sahai Common reference string (CRS) to prove the validity of decryption shares so as to achieve robustness against malicious adversaries.

3. Choose random polynomials P₁[Z], P₂[Z], P[Z] ∈

_(p)[Z] of degree t-1 such that P₁(0)=x₁, P₂(0)=x₂ and P(0)=y. For each i ∈{1, . . . , n}, compute

Y _(i,1) =f ^(P) ¹ ^((i)) g ^(P(i)) , Y _(i,2) =h ^(P) ² ^((i)) g ^(P(i)).

4. Choose a chameleon hash function [see the paper by Krawczyk and Rabin] CMH=(CMKg, CMhash, CMswitch) where the hashing algorithm CMhash ranges over {0,1}^(L), with L ∈ poly(λ). Then, generate a pair

$\left( {{hk},{tk}} \right)\overset{\$}{}{(\lambda)}$

made of a hashing key hk and its corresponding trapdoor tk. As the latter is not used in the scheme, it can be erased.

5. Generate a key pair for the linearly homomorphic signature with n=3. Let

(g _(z) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i) , h _(i)}_(i=1) ³ , {ĝ _(i) , ĥ _(i)}_(i=1) ³ , w, ŵ)

be the public key, where w ∈

^(L+1) and ŵ ∈

^(L+1), and let {χ_(i), γ_(i), δ_(i)}_(i=1) ³ be the corresponding private key. The private key component h_(z) ^(α) ^(r) is not used and can be discarded.

6. Generate one-time linearly homomorphic signatures {(z_(j), r_(j), u_(j))}_(j=1,2) on the vectors {right arrow over (f)}=(f, 1, g) ∈

³ and {right arrow over (h)}(1, h, g) ∈

³. These are obtained as

(z ₁ , r ₁ , u ₁)=(f ^(−χ) ¹ g ^(−χ) ³ , f ^(−γ) ¹ g ^(−γ) ³ , f ^(−δ) ¹ g ^(−δ) ³ ) and

(z ₂ , r ₂ , u ₂)=(h ^(−χ) ² g ^(−χ) ³ , h ^(−γ) ₂ g ^(−γ) ³ , h ^(−δ) ² g ^(−δ) ³ ).

7. Define the vector of decryption key shares as SK=(SK₁, . . . , SK_(n)), where SK_(i)=(P₁(i), P₂(i) , P(i)) ∈

_(p) ³ for each i ∈ {1, . . . , n}. The corresponding vector VK=(VK₁, . . . , VK_(n)) of verification keys is defined so that, for each i ∈ {1, . . . , n}, VK_(i)=(Y_(i,1), Y_(i,2)) ∈

². The public key PK is defined as

(g, ĝ, {right arrow over (f)}, {right arrow over (h)}, {right arrow over (f)} ₁ , {right arrow over (f)} ₂ , {right arrow over (f)} ₃ , X ₁ , X ₂ , g _(z) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i)}_(i=1) ³ , {ĝ _(i) , ĥ _(i)}_(i=1) ³ , w, ŵ, {(z _(j) , r _(j) , u _(j))}_(j=1) ³ , hk)

Encrypt (M, PK): to encrypt a message M ∈

:

-   1. Choose

$\theta_{1},{\theta_{2}\overset{R}{}{\mathbb{Z}}_{p}}$

and compute

C ₀ =M·X ₁ ^(θ) ¹ ·X ₂ ^(θ) ² , C ₁ =f ^(θ) ¹ , C ₂ =h ^(θ) ² , C ₃ =g ^(θ) ¹ ^(+θ) ₂.

-   2. Derive a homomorphic signature (z, r, u, v) on the vector (C₁,     C₂, C₃) ∈     ³ with respect to a tag τ that will authenticate the whole     ciphertext. Namely, choose

$\rho \overset{R}{}{\mathbb{Z}}_{p}$

as well as random coins

s hash   R  hash

for CMH and compute

z=z ₁ ^(θ) ¹ ·z ₂ ^(θ) ² r=r ₁ ^(θ) ¹ ·r ₂ ^(θ) ² v=h _(u) ^(pρ) u=u ₁ ^(θ) ¹ ·u ₂ ^(θ) ² ·H

(τ)^(−ρ)

where τ=CMhash (hk, (C₀, C₁, C₂, C₃, z, r, v), s_(hash)) ∈ {0,1}^(L).

-   3. Output the ciphertext

C=(C ₀ , C ₁ , C ₂ , C ₃ , z, r, u, v, s _(hash)) ∈

⁸×

_(hash)

Ciphertext-Verify (PK,C): parce C as per the previous equation. Return 1 if and only if (z, r, u, v) ∈

⁴ is a valid linearly homomorphic signature on the vector (C₁, C₂, C₃) and satisfies

=e(z, ĝ _(z))·e(r, ĝ _(r))·π_(i=1) ³ e(C _(i) , ĝ _(i)) and

=e(z, ĥ _(z))·e(u, ĥ _(u))·e(v,

(τ))·π_(i=1) ³ e(C _(i) , ĥ _(i)).

where τ=CMhash (hk, (c₀, C₁, C₂, C₃, z, r, v), s_(hash)) ∈ {0,1}^(L). Share-Decrypt (PK,i,SK_(i),C): on inputs SK_(i)=(P₁(i), P₂(i), P(i)) ∈

_(p) ³ and C, return (i,⊥) if Ciphertext-Verify (PK,C)=0. Otherwise, compute {circumflex over (μ)}_(i)=(v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P), π_(v) _(i) ) which consists of a partial decryption v_(i)=C₁ ^(P) ¹ ^((i))·C₂ ^(P) ² ^((i))·C₃ ^(P(i)), commitments {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P) to exponents P₁(i), P₂(i), P(i) ∈

_(p) and a proof π_(v) _(i) that these satisfy

v _(i) =C ₁ ^(P) ¹ ^((i)) ·C ₂ ^(P) ² ^((i)) ·C ₃ ^(P(i)) , Y _(i,1) =f ^(P) ¹ ^((i)) g ^(P(i),) Y _(i,2) =h ^(P) ² ^((i)) g ^(P(i)).

The commitments {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P) and the proof π_(v) _(i) that are generated using the Groth-Sahai common reference string ({right arrow over (f)}₁, {right arrow over (f)}₂, {right arrow over (f)}₃). Share-Verify (PK, VK, C, {(i, {circumflex over (μ)}_(i))}_(i∈s)): parse C as (C₀, C₁, C₂, C₃, z, r, u, v, s_(hash)) and VK_(i) as (Y_(i, 1), Y_(i, 2)) ∈

². If {circumflex over (μ)}_(i)=⊥ or if {circumflex over (μ)}_(i) cannot be parsed properly as (v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P), π_(μ) _(i) ), 0 is returned. Otherwise, if π_(v) _(i) is a valid proof, 1 is returned. 0 is returned in any other situation. Combine (PK, VK, C, {(i,{circumflex over (μ)}_(i))}_(i∈s)): for each i ∈ S, {circumflex over (μ)}_(i) is parsed as (v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P), π_(μ) _(i) ) and ⊥ is returned if Share-Verify (PK, VK, C, (i, {circumflex over (μ)}_(i)))=0. Otherwise, the following is computed

$v = {{\prod\limits_{i \in S}\; v_{i}^{\Delta_{i,s}{(0)}}} = {{C_{1}^{x_{1}} \cdot C_{2}^{x_{2}} \cdot C_{3}^{y}} = {X_{1}^{\theta_{1}} \cdot X_{2}^{\theta_{2}}}}}$

which allows recovering M=C₀/v.

If the scheme is instantiated using the standard discrete-logarithm-based chameleon hash function described by Krawczyk-Rabin, s_(hash) consists of a single element of

_(p). The whole ciphertext C thus lives in

⁸×

_(p). Concretely, if each element has a representation of 256 bits, as recommended on Barreto-Naehrig curves [see P. Barreto, M. Naehrig. Pairing-Friendly Elliptic Curves of Prime Order. In SAC'05, Lecture Notes in Computer Science 3897, pp. 319-331, Springer, 2005.] at the 128-bit security level, the ciphertext overhead (i.e., the difference between the size of the ciphertext and that of the plaintext) amounts to 2048 bits. In comparison, the most efficient scheme provided by Libert-Yung, which relies on the stronger Symmetric eXternal Diffie Hellman (SXDH) assumption, has a ciphertext overhead of 3328 bits. The scheme of the first preferred embodiment can thus compress ciphertexts by 36% while relying on weaker hardness assumptions. Moreover, the scheme works in all pairing configurations: unlike the SXDH-based construction of Libert-Yung, it can be safely instantiated in asymmetric pairing configurations (G, d, (

,

,

_(T)) endowed with an efficiently computable isomorphism: ψ:

→

.

Second Preferred Embodiment

The first preferred embodiment can be further optimized by assuming that the relies on the Decision Diffie-Hellman (DDH) assumption holds in the group G. In

, the XDLIN₂ assumption is still relied on, so there is no need to assume that no isomorphism of the form ψ:

→□ is efficiently computable: the construction works with or without it.

In the second preferred embodiment, the ciphertext overhead reduces to 6 elements of □ and one scalar.

Keygen (λ, t, n):

1. Choose asymmetric bilinear groups (□,

, □_(T)) of prime order p>2^(λ), generators

$f,{h\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}},{\hat{g}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}\hat{}},x,{y\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}}$

and set X=f^(x)h^(y)∈

. Then, define the vector {right arrow over (f)}=(f, h) ∈

².

2. Choose

${\hat{f}}_{1},{{\hat{f}}_{2}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}}$

and define vectors

{right arrow over (f)} ₁=({right arrow over (f)} ₁, 1, ĝ), {right arrow over (f)} ₂=(1, {circumflex over (f)} ₂ , ĝ), {right arrow over (f)} ₃ ={right arrow over (f)} ₁ ^(φ) ¹ ·{right arrow over (f)} ₂ ^(φ) ² ·(1, 1, ĝ)

where

$\varphi_{1},{\varphi_{2}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}},$

which is used as a Groth-Sahai Common reference string (CRS) to prove the validity of decryption shares.

3. Choose random polynomials P₁[Z], P₂[Z] ∈

_(p)[Z] of degree t-1 such that P₁(0)=x, P₂(0)=y. For each i ∈ {1, . . . , n}, compute

Y _(i,1) =f ^(P) ¹ ^((i)) h ^(P) ² ^((i)) ∈

.

4. Choose a chameleon hash function CMH=(CMKg, CMhash, CMswitch) where the hashing algorithm CMhash ranges over {0,1}^(L), with L ∈ poly(λ). Then, generate a pair (hk, tk)

(λ) and erase the trapdoor tk.

5. Generate a key pair for the linearly homomorphic signature with n=2. Let

(g _(q) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i) , h _(i)}_(i=1) ³ , {ĝ _(i) , ĥ _(i)}_(i=1) ³ , w, ŵ)

be the public key, where w ∈

^(L+1) and ŵ ∈

^(L+1), and let {χ_(i), γ_(i), δ_(i)}_(i=1) ² be the corresponding private key. The private key component h_(z) ^(α) ^(r) will not be used and can be discarded.

6. Generate a one-time linearly homomorphic structure-preserving signature (z₁, r₁, u₁) on the vector {right arrow over (f)}=(f, h) ∈

². This signature is obtained as

(z ₁ , r ₁ , u ₁)=(f ^(−χ) ¹ h ^(−χ) ³ , f ^(−γ) ¹ h ^(−γ) ³ , f ^(−δ) ¹ h ^(−δ) ³ ).

7. Define the vector of decryption key shares as SK=(SK₁, . . . , SK_(n)), where SK_(i)=(P₁(i), P₂(i)) ∈

_(p) ² for each i ∈ {1, . . . , n}. The corresponding vector VK=(VK₁, . . . , VK_(n)) of verification keys is obtained by defining VK_(i)=Y_(i,1) for i=1 to n. The public key PK is defined as

(g, ĝ, {right arrow over (f)}, {right arrow over (h)}, {right arrow over (f)} ₁ , {right arrow over (f)} ₂ , {right arrow over (f)} ₃ , X, g _(z) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i) , h _(i)}_(i=1) ³ , {ĝ _(i) , ĥ _(i)}_(i=1) ³ , w, ŵ, {(z _(j) , r _(j) u _(j))}_(j=1) ³ , hk)

Encrypt (M, PK): to encrypt a message M ∈

:

1. Choose

$\theta_{1}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}$

and compute

C ₀ =M·X ^(θ) ¹ , C ₁ =f ^(θ) ¹ , C ₂ =h ^(θ) ³ .

2. Construct a linearly homomorphic signature (z, r, u, v) on the vector (C₁, C₂) ∈

² with respect to a tag T that will authenticate the whole ciphertext. Namely, choose

$\rho \overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}$

as well as random coins

s hash  ←  R   hash

for CMH and compute

z=z ₁ ^(θ) ¹ r=r ₁ ^(θ) ¹ v=h _(u) ^(ρ) u=u ₁ ^(θ) ¹ ·H

(τ)^(−ρ)

where τ=CMhash (hk, (C₀, C₁, C₂, z, r, v), s_(hash)) ∈ {0,1}^(L). 3. Output the ciphertext

C=(C ₀ , C ₁ , C ₂ , z, r, u, v, s _(hash)) ∈

⁷×

_(hash)

Ciphertext-Verify (PK,C): parse C as per the previous equation. Return 1 if and only if (z, r ,u, v) ∈

⁴ is a valid linearly homomorphic signature on the vector (C₁, C₂) and satisfies

1

_(T) =e(z, ĝ _(z))·e(r, ĝ _(r))·π_(i=1) ² e(C _(i) , ĝ _(i)) and

1

_(T) =e(z, ĥ _(z))·e(u, ĥ _(u))·e(v, H

(τ))·π_(i=1) ² e(C _(i) , ĥ _(i)).

where τ=CMhash (hk, (C₀, C₁, C₂, z, r, v), s_(hash)) ∈ {0,1}^(L). Share-Decrypt (PK,i,SK_(i),C): on inputs SK_(i)=(P₁(i), P₂(i)) ∈

_(p) ² and C, return (i, ⊥) if Ciphertext-Verify (PK,C)=0. Otherwise, compute {circumflex over (μ)}_(i)=(v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , π_(μ) _(i) ) which consists of a partial decryption v_(i)=C₁ ^(P) ¹ ^((i))·C₂ ^(P) ² ^((i)) commitments {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ to exponents P₁(i), P₂(i) ∈

_(p) and a proof π_(μ) _(i) that these satisfy

v _(i) =C ₁ ^(P) ¹ ^((i)) ·C ₂ ^(P) ² ^((i)) , Y _(i,1) =f ^(P) ¹ ^((i)) h ^(P) ² ^((i)).

The commitments {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ and the proof π_(μ) _(i) that are generated using the Groth-Sahai common reference string ({right arrow over (f)}₁, {right arrow over (f)}₂, {right arrow over (f)}₃). Share-Verify (PK, VK, C, (i, {circumflex over (μ)}_(i))): parse C as (C₀, C₁, C₂, z, r, u, v, s_(hash)) and VK_(i) as Y_(i,1) ∈

. If {circumflex over (μ)}_(i)=⊥ or if {circumflex over (μ)}_(i) cannot be parsed properly as (v_(i), {right arrow over (C)}_(P) ₁ , Ĉ_(P) ₂ , π_(μ) _(i) ), 0 is returned. Otherwise, if π_(μ) _(i) is a valid proof, 1 is returned. 0 is returned in any other situation. Combine (PK,VK,C, {(i, {circumflex over (μ)}_(i))}_(i∈s)): for each i ∈ S, {circumflex over (μ)}_(i) is parsed as (v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , π_(μ) _(i) ) and ⊥ is returned if Share-Verify (PK,VK,C, (i,{circumflex over (μ)}_(i)))=0. Otherwise, the following is computed

$v = {{\prod\limits_{i \in S}\; v_{i}^{\Delta_{i,s}{(0)}}} = {{C_{1}^{x} \cdot C_{2}^{y}} = X^{\theta_{1}}}}$

which allows recovering M by calculating M=C₀/v.

At the 128-bit security level, the ciphertext overhead is now reduced to 1792 bits, which improves upon the 3328-bit overhead of Libert-Yung (in their most efficient SXDH-based solution) by about 46%.

If it is assumed that a multi-exponentiation with two base elements has roughly the same cost as a single-base exponentiation, the computational workload for the sender is reduced to 8 exponentiations in

(including the chameleon hash evaluation cost). In order to check the validity of a ciphertext, the verifier only has to evaluate a product of 6 pairings when the two equations in Ciphertext-Verify are simultaneously processed using a randomized batch verification mechanism. Under the SXDH assumption, the Libert-Yung's framework requires 7 exponentiations in

and 2 exponentiations in

(where they tend to be slower than in

) if their scheme is instantiated using Groth's one-time signature [see J. Groth. Simulation-sound NIZK proofs for a practical language and constant size group signatures. In Asiacrypt 2006, Lecture Notes in Computer Science 4284, pp. 444-459, 2006.]. Using batch verification techniques [see O. Blazy, G. Fuchsbauer, M. Izabachène, A. Jambert, H. Sibert, D. Vergnaud. Batch Groth-Sahai. In Applied Cryptography and Network Security (ACNS'10), Lecture Notes in Computer Science 6123, pp. 218-235, 2010.], both schemes have the same cost when it comes to check the validity of a ciphertext.

From a computational standpoint, the above solution is thus slightly faster than Libert-Yung with the advantage of substantially shorter ciphertexts. Moreover, the scheme of the second preferred embodiment still relies on weaker hardness assumptions than Libert-Yung since it is not required that DDH be hard in

: the scheme of the second preferred embodiment remains secure in Type II pairing configurations, in the presence of an efficiently computable isomorphism: ψ:

→

.

It will also be appreciated that, like the constructions of Libert-Yung, the constructions of the present embodiments remain compatible with existing adaptively secure protocols (see e.g., R. Canetti, R. Gennaro, S. Jarecki, H. Krawczyk, T. Rabin. Adaptive Security for Threshold Cryptosystems. In Crypto'99, Lecture Notes in Computer Science 1666, pp. 98-115, Springer, 1999.]) allowing a set of parties to jointly generate a public key in order to avoid the need for a trusted dealer in the key generation phase.

Third Preferred Embodiment

As already mentioned, the third preferred embodiment, which is a variant of the first preferred embodiment, relies on the second signature scheme described in the Annex.

Keygen (λ, t, n):

1. Choose bilinear groups (

,

,

_(T)) of prime order p>2⁸⁰ , generators

$g,f,{h\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}},{\hat{g}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}\hat{}},x_{1},x_{2},{y\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}}$

and set X₁=f^(x) ¹ g^(y) ∈

, X₂=h^(x) ² g_(y) ∈

. Then, define the vectors {right arrow over (f)}=(f, 1, g) ∈

³ and {right arrow over (h)}=(1, h, g) ∈

³.

2. Choose

${\hat{f}}_{1},{{\hat{f}}_{2}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}}$

and define vectors

{right arrow over (f)} ₁=({circumflex over (f)} ₁, 1, ĝ), {right arrow over (f)} ₂=(1, {circumflex over (f)} ₂ , ĝ), {right arrow over (f)} ₃ ={right arrow over (f)} ₁ ^(φ) ¹ ·{right arrow over (f)} ₂ ^(φ) ² ·(1,1,ĝ)

where

$\varphi_{1},{\varphi_{2}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}},$

which is used as Groth-Sahai Common reference string (CRS) to prove the validity of decryption shares.

3. Choose random polynomials P₁[Z], P₂[Z], P[Z] ∈

_(p)[Z] of degree t-1 such that P₁(0)=x₁, P₂(0)=x₂ and P(0)=y. For each i ∈ {1, n}, compute

Y _(i,1) =f ^(P) ¹ ^((i)) g ^(P(i)) , Y _(i,2) =h ^(P) ² ^((i)) g ^(P(i)).

4. Choose a chameleon hash function CMH=(CMKg, CMhash, CMswitch) where the hashing algorithm CMhash ranges over {0,1}^(L), with L ∈ poly(λ). Then, generate a pair

$\left( {{hk},{tk}} \right)\overset{\mspace{11mu} \$ \mspace{11mu}}{\leftarrow}{(\lambda)}$

made of a hashing key hk and its corresponding trapdoor tk. As the latter is not used in the scheme, it can be erased.

5. Generate a key pair for the linearly homomorphic signature of the second signature scheme in the Annexe with n=3. Let

(g _(z) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i) , h _(i)}_(i=1) ³ , {ĝ _(i) , ĥ _(i)}_(i=1) ³ , w, ŵ)

be the public key, where w ∈

^(L+1) and ŵ ∈

^(L+1), and let {χ_(i), γ_(i), δ_(i)}_(i=1) ³ be the corresponding private key. The private key component h_(z) ^(αr) is not used and can be discarded.

6. Generate one-time linearly homomorphic signatures {(z_(j), r_(j), u_(j))}_(j=1,2) on the vectors {right arrow over (f)}=(f, 1, g) ∈

³ and {right arrow over (h)}=(1, h, g) ∈

³. These are obtained as

(z ₁ , r ₁ , u ₁)=(f ^(−χ) ¹ g ^(−χ) ³ , f ^(−γ) ¹ g ^(−γ) ₃ , f ^(−δ) ¹ g ^(−δ) 3 ) and

(z ₂ , r ₂ , u ₂)=(h ^(−χ) ² g ^(−χ) ³ , h ^(−γ) ² g ^(−γ) ³ , h ^(−δ) ² g ^(−δ) ³ ).

7. Define the vector of decryption key shares as SK=(SK₁, . . . , SK_(n)), where SK_(i)=(P₁(i), P₂(i), P(i)) ∈

_(p) ³ for each i ∈ {1, . . . , n}. The corresponding vector VK=(VK₁, . . . , VK_(n)) of verification keys is defined so that, for each i − {1, . . . , n}, VK_(i)=(Y_(i,1), Y_(i,2)) ∈

². The public key PK is defined as

(g, ĝ, {right arrow over (f)}, {right arrow over (h)}, {right arrow over (f)} ₁ , {right arrow over (f)} ₂ , {right arrow over (f)} ₃ , X ₁ , X ₂ , g _(z) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i) , h _(i)}_(i=1) ³ , {ĝ _(i) , ĥ _(i)}_(i=1) ³ , w, ŵ, {(z _(u) , r _(j) , u _(j))}_(j=1) ³ , hk)

Encrypt (M, PK): to encrypt a message M ∈

:

1. Choose

$\theta_{1},{\theta_{2}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}}$

and compute

C ₀ =M·X ₁ ^(θ) ¹ ·X ₂ ^(θ) ² , C ₁ =f ^(θ) ¹ , C ₂ =h ^(θ) ₂ , C ₃ =g ^(θ) ₁ ^(+θ) ² .

2. Derive a linearly homomorphic signature (z, r, u, v) on the vector (C₁, C₂, C₃) ∈

³ with respect to a tag τ that will authenticate the whole ciphertext. Namely, choose

$\rho,{\vartheta \overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}}$

as well as random coins

$s_{hash}\overset{\mspace{14mu} R\mspace{11mu}}{\leftarrow}_{hash}$

for CMH and compute

z=z ₁ ^(θ) ¹ ·z ₂ ^(θ) ² v=h _(u) ^(ρ) w=g _(r) ^(θ)

r=r ₁ ^(θ) ¹ ·r ₂ ^(θ) ² ·H

(τ)^(−ρ)

where τ=CMhash (hk,(C₀, C₁, C₂, C₃, z, v, w), s_(hash)) ∈ {0,1}^(L). 3. Output the ciphertext

C=(C ₀ , C ₁ , C ₂ , C ₃ , z, r, u, v, w, s _(hash)) ∈

⁹×

_(hash)

Ciphertext-Verify(PK,C): parse C as per the previous equation. Return 1 if and only if (z, r, u, v, w) ∈

⁵ is a valid linearly homomorphic signature on the vector (C₁, C₂, C₃) and satisfies

1

_(T) =e(z, ĝ _(z))·e(r, ĝ _(r))·e(w, H

(τ))·π_(i=1) ³ e(C _(i) , ĝ _(i)) and

1

_(T) =e(z, ĥ _(z))·e(u, ĥ _(u))·e(v, H

(τ))·π_(i=1) ³ e(C _(i) , ĥ _(i)).

where τ=CMhash (hk,(C₀, C₁, C₂, C₃, s_(hash)) ∈ {0,1}^(L). Share-Decrypt (PK,i,SK_(i),C): on inputs SK_(i)=(P₁(i), P₂(i), P(i)) ∈

_(p) ³ and C, return (i, ⊥) if Ciphertext-Verify (PK,C)=0. Otherwise, compute {circumflex over (μ)}_(i)=(v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P), π_(v) _(i) ) which consists of a partial decryption v_(i)=C₁ ^(P) ¹ ^((i))·C₂ ⁾ ² ^((i))·C₃ ^(P(i)), commitments {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P) to exponents P₁(i), P₂(i), P(i) ∈

_(p) and a proof π_(v) _(i) that these satisfy

v _(i) =C ₁ ^(P) ¹ ^((i)) ·C ₂ ^(P) ^((i)) ·C ₃ ^(P(i)) , Y _(i,1) =f ^(P) ¹ ^((i)) g ^(P(i)) , Y _(i,2) =h ^(P) ² ^((i)) g ^()(i)).

The commitments {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P) and the proof π_(v) _(i) that are generated using the Groth-Sahai common reference string ({right arrow over (f)}₁, {right arrow over (f)}₂, {right arrow over (f)}₃). Share-Verify (PK,VK,C, {(i, {circumflex over (μ)}_(i))}_(i∈s)): parse C as (C₀, C₁, C₂, C₃, z, r, u, w, s_(hash)) and VK_(i) as (Y_(i, 1), Y_(i, 2)) ∈

². If {circumflex over (μ)}_(i)=⊥ or if {circumflex over (μ)}_(i) cannot be parsed properly as (v_(i), {right arrow over (C)}_(P) ₁ , {right arrow over (C)}_(P) ₂ , {right arrow over (C)}_(P), π_(μ) _(i) ), 0 is returned. Otherwise, if π_(v) _(i) is a valid proof, 1 is returned. 0 is returned in any other situation. Combine (PK, VK, C, {(i, {circumflex over (μ)}_(i))}_(i∈s)): for each i ∈ S, {circumflex over (μ)}_(i) is parsed as (v_(i), Ĉ_(P) ₁ , Ĉ_(P) ₂ , Ĉ_(P), π_(μ) _(i) ) and ⊥ is returned if Share-Verify (PK, VK, C, (i, {circumflex over (μ)}_(i)))=0. Otherwise, the following is computed

$v = {{\prod\limits_{i \in S}\; v_{i}^{\Delta_{i,s}{(0)}}} = {{C_{1}^{x_{1}} \cdot C_{2}^{x_{2}} \cdot C_{3}^{y}} = {X_{1}^{\theta_{1}} \cdot X_{2}^{\theta_{2}}}}}$

which allows recovering M=C₀/v.

FIG. 1 illustrates an exemplary system in which the invention may be implemented. The system comprises an entity device (“server”) 110 that is one of the n entities that share a private key (the other entity devices are not illustrated) and a sender device 120. The devices 110, 120 can be any kind of suitable computer or device capable of performing calculations, such as a standard Personal Computer (PC) or workstation. The devices 110, 120 each preferably comprise at least one (hardware) processor 111, 121, RAM memory 112, 122, a user interface 113, 123 for interacting with a user, and a second interface 114, 124 for interaction with other devices over connection 130.

The sender device 120 is configured to encrypt a message as described herein, and the entity device 110 is configure to generate keys, verify ciphertexts, share partial decryptions, verify partial decryptions and recover the plaintext message as described herein.

The devices 110, 120 each also preferably comprise an interface for reading a software program from a non-transitory digital data support 140, 150 that stores instructions that, when executed by a processor, perform the corresponding functions. The skilled person will appreciate that the illustrated devices are very simplified for reasons of clarity and that real devices in addition would comprise features such as persistent storage.

Each feature disclosed in the description and (where appropriate) the claims and drawings may be provided independently or in any appropriate combination. Features described as being implemented in hardware may also be implemented in software, and vice versa. Reference numerals appearing in the claims are by way of illustration only and shall have no limiting effect on the scope of the claims.

Annexe A First Linearly Homomorphic Structure-Preserving Signature Scheme

Keygen (λ, n): given a security parameter λ and the dimension n ∈

of the subspace to be signed: 1. Choose a bilinear group (

,

,

_(T)) of prime order p>2^(λ).

2. Choose

${h_{u}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}},{{\hat{h}}_{u}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}\hat{}}$

and α_(z), α_(r),

${\beta_{z}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}},$

and define

g _(z) =h _(u) ^(α) ^(z) , g _(r) =h _(u) ^(α) ^(r) , h _(z) =h _(u) ^(β) ^(z) ,

ĝ _(z) =ĥ _(u) ^(α) ^(z) , ĝ _(r) =ĥ _(u) ^(α) ^(r) , ĥ _(z) =ĥ _(u) ^(β) ^(z) .

3. For i=1 to n, pick χ_(i), γ_(i),

$\delta_{i}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}$

and compute g_(i)=g_(z) ^(χ) ^(i) g_(r) ^(γ) ^(i) , h_(i)=h_(z) ^(χ) ^(i) h_(u) ^(δ) ^(i) , ĝ_(i)=ĝ_(z) ^(χ) ^(i) ĝ_(r) ^(γ) ^(i) , ĥ_(i)=ĥ_(z) ^(χ) ^(i) ĥ_(u) ^(δ) ^(i) . 4. Choose a random vector

$\left( {\alpha_{w,0},\ldots \mspace{14mu},\alpha_{w,L}} \right)\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}^{L + 1}$

and, for i=1 to L, compute ŵ_(i)=ĥ_(u) ^(α) ^(w,i) and w_(i)=h_(u) ^(α) ^(w,i) . Define the vectors ŵ=(ŵ₀, ŵ₁, . . . , ŵ_(L)) ∈

^(L+1) and w=(w₀, w₁, . . . , w_(L)) ∈

^(L+1) that define hash functions H

: {0,1}^(L)→

and H

: {0,1}^(L)→

that map L-bit strings τ ∈ {0,1}^(L) to H

(τ)=ŵ₀·π_(k=1) ^(L) ŵ_(k) ^(τ[k] and H)

(τ)=w₀·π_(k=1) ^(L) w_(k) ^(τ[k]), respectively.

The public key pk comprises

(g _(z) , g _(r) , h _(z) , h _(u) , ĝ _(z) , ĝ _(r) , ĥ _(z) , ĥ _(u) , {g _(i) , h _(i)}_(i=1) ^(n) , {ĝ _(i) , ĥ _(i)}_(i=1) ^(n) , w, ŵ)

while the private key is sk=(h_(z) ^(αr), {χ_(i), γ_(i), δ_(i)}_(i=1) ^(n)). Sign (sk,τ, (M₁, . . . , M_(n))): to sign a vector (M₁, . . . , M_(n)) ∈

^(n) with regard to the file identifier τ using sk=(h_(z) ^(α) ^(r) , {χ_(i), γ_(i), δ_(i)}_(i=1) ^(n)), choose

$\theta,{\rho \overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}}$

and compute

${z = {g_{r}^{\theta} \cdot {\prod\limits_{i = 1}^{n}\; M_{i}^{- \chi_{i}}}}},{r = {g_{z}^{- \theta} \cdot {\prod\limits_{i = 1}^{n}\; M_{i}^{- \gamma_{i}}}}},{u = {\left( h_{z}^{\alpha_{r}} \right)^{- \theta} \cdot {\prod\limits_{i = 1}^{n}\; {M_{i}^{- \delta_{i}} \cdot {H_{}(\tau)}^{- \rho}}}}},{v = h_{u}^{\rho}}$

The signature that is output comprises σ=(z, r, u, v) ∈

⁴.

SignDerive (pk, τ, {(ω_(i),σ^((i)))}_(i=1) ^(l)): given pk, a file identifier τ and l tuples (w_(i),σ^((i))), parse each signature σ^((i)) as σ^((i))=(z_(i), r_(i), u_(i), v_(i)) ∈

⁴ for i=1 to l. Then choose

$\rho^{\prime}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}$

and compute

$z = {\prod\limits_{i = 1}^{}\; z_{i}^{\omega_{i}}}$ $r = {\prod\limits_{i = 1}^{}\; r_{i}^{\omega_{i}}}$ $u = {\prod\limits_{i = 1}^{}\; {u_{i}^{\omega_{i}} \cdot {H_{}(\tau)}^{- \rho^{\prime}}}}$ $v = {\prod\limits_{i = 1}^{}\; {v_{i}^{\omega_{i}} \cdot h_{u}^{\rho^{\prime}}}}$

and return σ=(z, r, u, v). Verify (pk, σ, τ, (M₁, . . . , M_(n))): given a signature σ=(z, r, u, v) ∈

⁴, a file identifier and a vector (M₁, . . . , M_(n)), return 1 if and only if (M₁, . . . , M_(n))≠(1

, . . . , 1

) and (z, r, u, v) satisfy the equalities

${1_{_{T}} = {{e\left( {z,{\hat{g}}_{z}} \right)} \cdot {e\left( {r,{\hat{g}}_{r}} \right)} \cdot {\prod\limits_{i = 1}^{n}\; {e\left( {M_{i},{\hat{g}}_{i}} \right)}}}},{1_{_{T}} = {{e\left( {z,{\hat{h}}_{z}} \right)} \cdot {e\left( {u,{\hat{h}}_{u}} \right)} \cdot {e\left( {v,{H_{\hat{}}(\tau)}} \right)} \cdot {\prod\limits_{i = 1}^{n}\; {{e\left( {M_{i},{\hat{h}}_{i}} \right)}.}}}}$

This scheme has a one-time variant, where a given public key allows signing only one linear subspace. This variant is obtained by setting θ=ρ=0 in the signing algorithm. Namely, a signature on a vector (M₁, . . . , M_(n)) ∈

^(n) comprises a triple (z, r, u)=(π_(i=1) ^(n) M_(i) ^(−χ) ^(i) , π_(i=1) ^(n) M_(i) ^(−γ) ^(i) , π_(i=1) ^(n) M_(i) ^(−δ) ^(i) ).

A Second Linearly Homomorphic Structure-Preserving Signature Scheme

Keygen (λ, n): is the same as in the first scheme. Sign (sk, τ, (M₁, . . . , M_(n))): to sign a vector (M₁, . . . , M_(n)) ∈0

^(n) with regard to the file identifier τ using sk=(h_(z) ^(α) ^(r) , {χ_(i),γ_(i),δ_(i)}_(i=1) ^(n)), choose

$\theta,{\rho \overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}}$

and compute

${z = {g_{r}^{\theta} \cdot {\prod\limits_{i = 1}^{n}\; M_{i}^{- \chi_{i}}}}},{r = {g_{z}^{- \theta} \cdot {\prod\limits_{i = 1}^{n}\; {M_{i}^{- \gamma_{i}} \cdot {H_{}(\tau)}^{- \vartheta}}}}},{u = {\left( h_{z}^{\alpha_{r}} \right)^{- \theta} \cdot {\prod\limits_{i = 1}^{n}\; {M_{i}^{- \delta_{i}} \cdot {H_{}(\tau)}^{- \rho}}}}},{v = h_{u}^{\rho}},{w = g_{r}^{\vartheta}}$

The signature that is output comprises σ=(z, r, u, v, w) ∈

⁵.

SignDerive (pk, τ, {(ω_(i),σ^((i)))}_(i=1) ^(l)): given pk, a file identifier τ and l tuples (ω_(i),σ^((i))), parse each signature σ^((i)) as σ^((i))=(z_(i), r_(i), u_(i), v_(i), w_(i)) ∈

⁵ for i=1 to l. Then choose

$\rho^{\prime}\overset{\mspace{11mu} R\mspace{11mu}}{\leftarrow}{\mathbb{Z}}_{p}$

and compute

$z = {\prod\limits_{i = 1}^{}\; z_{i}^{\omega_{i}}}$ $r = {\prod\limits_{i = 1}^{}\; {r_{i}^{\omega_{i}} \cdot {H_{\hat{G}}(\tau)}^{- \vartheta}}}$ $u = {{\prod\limits_{i = 1}^{}\; {{u_{i}^{\omega_{i}} \cdot {H_{}(\tau)}^{- \rho^{\prime}}}v}} = {\prod\limits_{i = 1}^{}\; {v_{i}^{\omega_{i}} \cdot h_{u}^{\rho^{\prime}}}}}$ $w = {\prod\limits_{i = 1}^{}\; {\omega_{i}^{\omega_{i}} \cdot g_{r}^{\vartheta}}}$

and return σ=(z, r, u, v, w). Verify (pk, σ, τ, (M₁, . . . , M_(n))): given a signature σ=(z,r,u,v,w) ∈

⁵, a file identifier τ and a vector (M₁, . . . , M_(n)), return 1 if and only if (M₁, . . . , M_(n))≠(

, . . . ,

) and (z, r, u, v, w) satisfy the equalities

${1_{_{T}} = {{e\left( {z,{\hat{g}}_{z}} \right)} \cdot {e\left( {r,{\hat{g}}_{r}} \right)} \cdot {e\left( {w,{H_{\hat{}}(\tau)}} \right)} \cdot {\prod\limits_{i = 1}^{n}\; {e\left( {M_{i},{\hat{g}}_{i}} \right)}}}},{1_{_{T}} = {{e\left( {z,{\hat{h}}_{z}} \right)} \cdot {e\left( {u,{\hat{h}}_{u}} \right)} \cdot {e\left( {v,{H_{\hat{}}(\tau)}} \right)} \cdot {\prod\limits_{i = 1}^{n}\; {{e\left( {M_{i},{\hat{h}}_{i}} \right)}.}}}}$ 

1. A device for encrypting a message using a public key, the device comprising: a processor configured to: obtain at least one encryption exponent; generate a first ciphertext component and a plurality of second ciphertext components, wherein the first ciphertext component is generated by multiplying the message with at least one element of the public key to the power of an encryption exponent and wherein each of the plurality of second ciphertext components is generated by taking at least one further element of the public key to the power of an encryption exponent; generate a linearly homomorphic signature on the plurality of second ciphertext components with respect to a tag obtained from the first ciphertext component and at least part of the plurality of second ciphertext components; and generate an overall ciphertext comprising the ciphertext components, and the linearly homomorphic signature; and an interface configured to output the overall ciphertext.
 2. A device for partially decrypting a ciphertext using a partial private key comprising a share of an entire private key, the ciphertext comprising a first ciphertext component, a plurality of second ciphertext components and a linearly homomorphic signature for a vector comprising the plurality of second ciphertext components, the device comprising: a processor configured to: verify that the linearly homomorphic signature is a valid signature for a vector comprising the plurality of second ciphertext components; obtain a partial decryption of the ciphertext using the partial private key; generate commitments to exponents of the partial private key; generate a proof that the commitments satisfy at least one predefined equality showing the correctness of the partial decryption; and generate a result comprising the partial decryption, the commitments and the proof; and an interface configured to output the result.
 3. A method for encrypting a message using a public key, the method comprising, at a device comprising a processor: obtaining at least one encryption exponent; generating a first ciphertext component and a plurality of second ciphertext components, wherein the first ciphertext component is generated by multiplying the message with at least one element of the public key to the power of an encryption exponent and wherein each of the plurality of second ciphertext components is generated by taking at least one further element of the public key to the power of an encryption exponent; generating a linearly homomorphic signature on the plurality of second ciphertext components with respect to a tag obtained from the first ciphertext component and at least part of the plurality of second ciphertext components; generating an overall ciphertext comprising the ciphertext components, and the linearly homomorphic signature; and outputting the overall ciphertext.
 4. A method for partially decrypting a ciphertext using a partial private key comprising a share of an entire private key, the ciphertext comprising a first ciphertext component, a plurality of second ciphertext components and a linearly homomorphic signature for a vector comprising the plurality of second ciphertext components, the method comprising, at a device comprising a processor: verifying that the linearly homomorphic signature is a valid signature for a vector comprising the plurality of second ciphertext components; obtaining a partial decryption of the ciphertext using the partial private key; generating commitments to exponents of the partial private key; generating a proof that the commitments satisfy at least one predefined equality showing the correctness of the partial decryption; generating a result comprising the partial decryption, the commitments and the proof; and outputting the result.
 5. A non-transitory digital data support that stores instructions that, when executed by a processor, perform the method of claim
 3. 6. A non-transitory digital data support that stores instructions that, when executed by a processor, perform the method of claim
 4. 